import { App } from 'vue';

// 模块元信息配置
export interface ModuleConfig {
  id: string;
  name: string;
  version: string;
  description: string;
}

// 发送指令方法类型定义（使用泛型参数）
export type SendCmd<CmdParams> = (
  moduleName: string,
  cmd: string,
  params?: CmdParams
) => void;

// 模块接口定义（修正泛型使用）
export interface ModuleInterface<EventData, CmdParams> {
  config: ModuleConfig;
  install(app: App): void;
  startup(): Promise<void>;
  // 供外部调用，更新插件数据（插件被动接收数据）
  updateEventData(data: Partial<EventData>): void;
  // 内部使用的获取数据方法（不暴露给外部）
  getEventData(): EventData;
  // 内部使用的发送指令方法（使用CmdParams泛型）
  sendCommand(cmd: string, params?: CmdParams): void;
}
